package com.itheima.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;

/**
 * 配置类 作用和xml一样
 * spring新注解
 * Configuration:
 *  作用：指定当前类是一个配置类
 *  细节：当前配置类作为AnnotationConfigApplicationContext的对象是，该注解可以不写
 * ComponentScan:
 *  作用：用于通过注解指定spring在创建容器是要扫描的包
 *  等价于：<context:component-scan base-package="com.itheima"></context:component-scan>
 * Bean
 *  作用：把当前方法的返回值作为bean对象存入spring的ioc容器中
 *  属性：
 *      name：用于指定bean的id，当不写时，默认值是当前的方法名称
 *  等价于：<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
 *         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
 *         <property name="user" value="root"></property>
 *         <property name="password" value="root"></property>
 *  细节：
 *      当我们使用注解配置方法时，如果方法有参数，spring框架会去容器中查找没有可用的对象.
 *      查找方式和Autowired注解的作用是一样的.
 *      1 new AnnotationConfigApplicationContext(springConfiguration.class, jdbc.class)
 * Import
 *  作用：用于导入其他的配置类
 *  属性：
 *      value：用于指定其他配置类的字节码,
 *             当我们使用Import的注释之后，有Import注解的类就是父配置类
 *
 * PropertySource
 *  作用：用于指定properties文件的位置
 *  属性：
 *      value： 指定文件名称和路径
 *              关键字：classpath 表示类路径下
 *
 */

@Configuration
@ComponentScan(basePackages = {"com.itheima"})
@Import(JdbcConfig.class)
@PropertySource("classpath:jdbcConfig.properties")
public class SpringConfiguration {


}
